package com.springboot.core.redis;

import java.util.List;

public interface IRedis {

	/**
	 * 获取Value，如无返空
	 * 
	 * @param key
	 *            键名称
	 * @return value
	 */
	String get(String key);

	/**
	 * 
	 * 永久写入Value
	 * 
	 * @param key
	 * @param value
	 * @return void 返回类型
	 */
	void set(String key, String value);

	/**
	 * 写入Value，并设定存活时间 (单位: 秒)
	 * 
	 * @param key
	 *            键名称
	 * @param value
	 *            值
	 * @param timeout
	 *            过期时间(值大于0时限时存储，值=-1时永久存储，值=0或小于-2时不存储)
	 */
	void set(String key, String value, long timeout);

	/**
	 * 更新Value (过期时间不变)
	 * 
	 * @param key
	 *            键名称
	 * @param value
	 *            值
	 */
	void update(String key, String value);

	/**
	 * 删除Value
	 * 
	 * @param key
	 *            键名称
	 */
	void delete(String key);

	/**
	 * 获取Value的剩余存活时间 (单位: 秒)
	 * 
	 * @param key
	 *            指定key
	 * @return 这个key的剩余存活时间
	 */
	long getTimeout(String key);

	/**
	 * 修改Value的剩余存活时间 (单位: 秒)
	 * 
	 * @param key
	 *            指定key
	 * @param timeout
	 *            过期时间
	 */
	void updateTimeout(String key, long timeout);

	/**
	 * 查询key
	 * 
	 */
	List<String> keys(String pattern);
}
